﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using System.Windows.Forms;
using System.Collections;
using System.Data;
using System.Data.SqlClient;
using System.Data.Sql;

namespace SAD
{
    class PanelCampana
    {
        //Atributos que se van a usar para llenar el panel correspondiente a la opcion "Buscar"
        private System.Windows.Forms.DataGridView dvgCampanas;
        private TextBox txtBoxBuscar;
        DataSet dtData = new DataSet();
        private Label label1Buscar, label2Buscar;
        private ComboBox combo1Buscar;

        //Atributos que se van a usar para llenar el panel correspondiente a la opcion "NUEVO"
        System.Windows.Forms.GroupBox groupBox1Nuevo;
        System.Windows.Forms.TextBox nombreCampTextNuevo;
        System.Windows.Forms.Label label1Nuevo;
        System.Windows.Forms.GroupBox groupBox2Nuevo;
        System.Windows.Forms.GroupBox groupBox3Nuevo;
        System.Windows.Forms.Label label2Nuevo;
        System.Windows.Forms.RichTextBox descripCampTextNuevo;
        System.Windows.Forms.Label label4Nuevo;
        System.Windows.Forms.Label label3Nuevo;
        System.Windows.Forms.DateTimePicker FechaFinCampNuevo;
        System.Windows.Forms.DateTimePicker FechaInicioCampNuevo;
        System.Windows.Forms.TextBox costoCampTextNuevo;
        System.Windows.Forms.Label label6Nuevo;
        System.Windows.Forms.Label label5Nuevo, label10Nuevo;
        System.Windows.Forms.ComboBox ComboMonedaCampNuevo;
        System.Windows.Forms.Button buttonRegistrarNuevo;
        System.Windows.Forms.ColorDialog colorDialog1Nuevo;
        System.Windows.Forms.Label label11Nuevo;
        System.Windows.Forms.TextBox presupuestoCampTextNuevo;
        System.Windows.Forms.Label label7Nuevo;
        System.Windows.Forms.ComboBox comboEmergenciaCampNuevo;


        public void llenarPanelNuevo(Panel pan)
        {

            System.Windows.Forms.GroupBox groupBox1;
            System.Windows.Forms.TextBox nombreCampText;
            System.Windows.Forms.Label label1;
            System.Windows.Forms.GroupBox groupBox2;
            System.Windows.Forms.GroupBox groupBox3;
            System.Windows.Forms.Label label2;
            System.Windows.Forms.RichTextBox descripCampText;
            System.Windows.Forms.Label label4;
            System.Windows.Forms.Label label3;
            System.Windows.Forms.DateTimePicker FechaFinCamp;
            System.Windows.Forms.DateTimePicker FechaInicioCamp;
            System.Windows.Forms.TextBox costoCampText, presupuestoCampText;
            System.Windows.Forms.Label label6;
            System.Windows.Forms.Label label5, label10, label11;
            System.Windows.Forms.ComboBox ComboMonedaCamp;
            System.Windows.Forms.Button buttonRegistrar;
            System.Windows.Forms.ColorDialog colorDialog1;
            //System.Windows.Forms.ComboBox 

            System.Windows.Forms.Label label7;
            System.Windows.Forms.ComboBox ComboEmergenciaCamp;

            List<String> listaEmergencias = null;
            List<Moneda> listaMonedas = null;

            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(VentanaCampana));
            groupBox1 = new System.Windows.Forms.GroupBox();
            descripCampText = new System.Windows.Forms.RichTextBox();
            label2 = new System.Windows.Forms.Label();
            nombreCampText = new System.Windows.Forms.TextBox();
            label1 = new System.Windows.Forms.Label();
            groupBox2 = new System.Windows.Forms.GroupBox();
            label4 = new System.Windows.Forms.Label();
            label3 = new System.Windows.Forms.Label();
            FechaFinCamp = new System.Windows.Forms.DateTimePicker();
            FechaInicioCamp = new System.Windows.Forms.DateTimePicker();
            groupBox3 = new System.Windows.Forms.GroupBox();
            costoCampText = new System.Windows.Forms.TextBox();
            label6 = new System.Windows.Forms.Label();
            label5 = new System.Windows.Forms.Label();
            ComboMonedaCamp = new System.Windows.Forms.ComboBox();
            buttonRegistrar = new System.Windows.Forms.Button();
            colorDialog1 = new System.Windows.Forms.ColorDialog();
            label10 = new Label();
            label11 = new Label();
            presupuestoCampText = new TextBox();

            label7 = new System.Windows.Forms.Label();
            ComboEmergenciaCamp = new System.Windows.Forms.ComboBox();

            groupBox1.SuspendLayout();
            groupBox2.SuspendLayout();
            groupBox3.SuspendLayout();

            // 
            // groupBox1
            // 
            groupBox1.BackColor = System.Drawing.Color.Transparent;
            groupBox1.Controls.Add(ComboEmergenciaCamp);
            groupBox1.Controls.Add(label7);
            groupBox1.Controls.Add(descripCampText);
            groupBox1.Controls.Add(label2);
            groupBox1.Controls.Add(nombreCampText);
            groupBox1.Controls.Add(label1);
            groupBox1.Location = new System.Drawing.Point(14, 30);
            groupBox1.Name = "groupBox1";
            groupBox1.Size = new System.Drawing.Size(403, 145);
            groupBox1.TabIndex = 0;
            groupBox1.TabStop = false;
            groupBox1.Text = "Datos Generales";


            // 
            // ComboEmergenciaCamp
            // 

            ComboEmergenciaCamp.Location = new System.Drawing.Point(98, 114);
            ComboEmergenciaCamp.Name = "ComboEmergenciaCamp";
            ComboEmergenciaCamp.Size = new System.Drawing.Size(288, 21);
            ComboEmergenciaCamp.TabIndex = 5;
            ComboEmergenciaCamp.DropDownStyle = ComboBoxStyle.DropDownList;

            listaEmergencias = GestorEmergencia.ObtenerEmergencias();

            for (int i = 0; i < listaEmergencias.Count; i++)
            {
                ComboEmergenciaCamp.Items.Add(listaEmergencias[i]);
            }


            // 
            // label7
            // 
            label7.AutoSize = true;
            label7.Location = new System.Drawing.Point(19, 117);
            label7.Name = "label7";
            label7.Size = new System.Drawing.Size(63, 13);
            label7.TabIndex = 4;
            label7.Text = "Emergencia";
            // 
            // descripCampText
            // 
            descripCampText.Location = new System.Drawing.Point(98, 58);
            descripCampText.Name = "descripCampText";
            descripCampText.Size = new System.Drawing.Size(288, 43);
            descripCampText.TabIndex = 3;
            descripCampText.Text = "";
            // 
            // label2
            // 
            label2.AutoSize = true;
            label2.Location = new System.Drawing.Point(19, 61);
            label2.Name = "label2";
            label2.Size = new System.Drawing.Size(63, 13);
            label2.TabIndex = 2;
            label2.Text = "Descripcion";
            // 
            // nombreCampText
            // 
            nombreCampText.Location = new System.Drawing.Point(98, 22);
            nombreCampText.Name = "nombreCampText";
            nombreCampText.Size = new System.Drawing.Size(288, 20);
            nombreCampText.TabIndex = 1;
            // 
            // label1
            // 
            label1.AutoSize = true;
            label1.Location = new System.Drawing.Point(19, 25);
            label1.Name = "label1";
            label1.Size = new System.Drawing.Size(44, 13);
            label1.TabIndex = 0;
            label1.Text = "Nombre";
            // 
            // groupBox2
            // 
            groupBox2.BackColor = System.Drawing.Color.Transparent;
            groupBox2.Controls.Add(label4);
            groupBox2.Controls.Add(label3);
            groupBox2.Controls.Add(FechaFinCamp);
            groupBox2.Controls.Add(FechaInicioCamp);
            groupBox2.Location = new System.Drawing.Point(14, 192);
            groupBox2.Name = "groupBox2";
            groupBox2.Size = new System.Drawing.Size(403, 100);
            groupBox2.TabIndex = 1;
            groupBox2.TabStop = false;
            groupBox2.Text = "Duracion";
            // 
            // label4
            // 
            label4.AutoSize = true;
            label4.Location = new System.Drawing.Point(19, 71);
            label4.Name = "label4";
            label4.Size = new System.Drawing.Size(69, 13);
            label4.TabIndex = 3;
            label4.Text = "Fecha de Fin";
            // 
            // label3
            // 
            label3.AutoSize = true;
            label3.Location = new System.Drawing.Point(19, 37);
            label3.Name = "label3";
            label3.Size = new System.Drawing.Size(80, 13);
            label3.TabIndex = 2;
            label3.Text = "Fecha de Inicio";
            // 
            // FechaFinCamp
            // 
            FechaFinCamp.Location = new System.Drawing.Point(105, 68);
            FechaFinCamp.Name = "FechaFinCamp";
            FechaFinCamp.Size = new System.Drawing.Size(200, 20);
            FechaFinCamp.TabIndex = 1;
            // 
            // FechaInicioCamp
            // 
            FechaInicioCamp.Location = new System.Drawing.Point(105, 34);
            FechaInicioCamp.Name = "FechaInicioCamp";
            FechaInicioCamp.Size = new System.Drawing.Size(200, 20);
            FechaInicioCamp.TabIndex = 0;
            // 
            // groupBox3
            // 
            groupBox3.BackColor = System.Drawing.Color.Transparent;
            groupBox3.Controls.Add(costoCampText);
            groupBox3.Controls.Add(label6);
            groupBox3.Controls.Add(label5);
            groupBox3.Controls.Add(ComboMonedaCamp);
            groupBox3.Controls.Add(presupuestoCampText);
            groupBox3.Controls.Add(label11);
            groupBox3.Location = new System.Drawing.Point(14, 300);
            groupBox3.Name = "groupBox3";
            groupBox3.Size = new System.Drawing.Size(403, 89);
            groupBox3.TabIndex = 2;
            groupBox3.TabStop = false;
            groupBox3.Text = "Datos Financieros";
            // 
            // costoCampText
            // 
            costoCampText.Location = new System.Drawing.Point(91, 30);
            costoCampText.Name = "costoCampText";
            costoCampText.Size = new System.Drawing.Size(121, 20);
            costoCampText.TabIndex = 3;
            // 
            // label6
            // 
            label6.AutoSize = true;
            label6.Location = new System.Drawing.Point(241, 32);
            label6.Name = "label6";
            label6.Size = new System.Drawing.Size(46, 13);
            label6.TabIndex = 2;
            label6.Text = "Moneda";
            // 
            // label5
            // 
            label5.AutoSize = true;
            label5.Location = new System.Drawing.Point(19, 33);
            label5.Name = "label5";
            label5.Size = new System.Drawing.Size(34, 13);
            label5.TabIndex = 1;
            label5.Text = "Costo";
            //
            //label11
            //
            label11.AutoSize = true;
            label11.Location = new System.Drawing.Point(19, 63);
            label11.Name = "label11";
            label11.Size = new System.Drawing.Size(34, 13);
            label11.TabIndex = 1;
            label11.Text = "Presupuesto";
            //
            //presupuestoCampText
            //

            presupuestoCampText.Location = new System.Drawing.Point(91, 60);
            presupuestoCampText.Name = "costoCampText";
            presupuestoCampText.Size = new System.Drawing.Size(121, 20);
            presupuestoCampText.TabIndex = 4;
            // 
            // ComboMonedaCamp
            // 

            ComboMonedaCamp.Location = new System.Drawing.Point(296, 30);
            ComboMonedaCamp.Name = "ComboMonedaCamp";
            ComboMonedaCamp.Size = new System.Drawing.Size(86, 21);
            ComboMonedaCamp.TabIndex = 0;
            ComboMonedaCamp.DropDownStyle = ComboBoxStyle.DropDownList;
             listaMonedas = GestorCampana.ObtenerMonedas();

              for (int i = 0; i < listaMonedas.Count; i++)
              {
                  //ComboMonedaCamp.Items.Add(listaMonedas[i].Substring(13));
                  ComboMonedaCamp.Items.Add(listaMonedas[i].Nombre);
              }

            //ComboMonedaCamp.Items.Add("NUEVO SOL");
            //ComboMonedaCamp.Items.Add("DOLAR");
            //ComboMonedaCamp.Items.Add("EURO");
            // 
            // buttonRegistrar
            // 
            buttonRegistrar.Location = new System.Drawing.Point(120, 402);
            buttonRegistrar.Name = "button1";
            buttonRegistrar.Size = new System.Drawing.Size(75, 23);
            buttonRegistrar.TabIndex = 3;
            buttonRegistrar.Text = "Registrar";
            buttonRegistrar.UseVisualStyleBackColor = true;
            //
            label10.AutoSize = true;
            label10.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            label10.Location = new System.Drawing.Point(200, 10);
            label10.Name = "label5";
            label10.Size = new System.Drawing.Size(11, 24);
            label10.TabIndex = 9;
            label10.Text = "Nueva Campaña";

            groupBox1.ResumeLayout(false);
            groupBox1.PerformLayout();
            groupBox2.ResumeLayout(false);
            groupBox2.PerformLayout();
            groupBox3.ResumeLayout(false);
            groupBox3.PerformLayout();

            pan.Controls.Add(buttonRegistrar);
            pan.Controls.Add(label10);
            pan.Controls.Add(groupBox3);
            pan.Controls.Add(groupBox2);
            pan.Controls.Add(groupBox1);

            buttonRegistrar.Click += new System.EventHandler(buttonRegistrar_Click);

            groupBox1Nuevo = groupBox1;
            nombreCampTextNuevo = nombreCampText;
            label1Nuevo = label1;
            groupBox2Nuevo = groupBox2;
            groupBox3Nuevo = groupBox3;
            label2Nuevo = label2;
            descripCampTextNuevo = descripCampText;
            label4Nuevo = label4;
            label3Nuevo = label3;
            FechaFinCampNuevo = FechaFinCamp;
            FechaInicioCampNuevo = FechaInicioCamp;
            costoCampTextNuevo = costoCampText;
            label6Nuevo = label6;
            label5Nuevo = label5;
            label10Nuevo = label10;
            ComboMonedaCampNuevo = ComboMonedaCamp;
            buttonRegistrarNuevo = buttonRegistrar;
            colorDialog1Nuevo = colorDialog1;
            label7Nuevo = label7;
            comboEmergenciaCampNuevo = ComboEmergenciaCamp;
            presupuestoCampTextNuevo = presupuestoCampText;
            label11Nuevo = label11;

        }

        public void llenarPanelBuscar(Panel pan)
        {
            //Grid para llenar la tabla de emergencias
            this.dvgCampanas = new DataGridView();
            this.dvgCampanas.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
            this.dvgCampanas.Location = new System.Drawing.Point(30, 150);
            this.dvgCampanas.Name = "dvgCampanas";
            this.dvgCampanas.Size = new System.Drawing.Size(543, 242);
            this.dvgCampanas.TabIndex = 9;

            //Texto donde va a ir el campo de la tabla que se va a buscar
            this.txtBoxBuscar = new TextBox();
            this.txtBoxBuscar.Location = new Point(30, 110);
            this.txtBoxBuscar.Name = "txtBoxBuscar";
            this.txtBoxBuscar.Size = new Size(200, 20);
            this.txtBoxBuscar.KeyPress += new KeyPressEventHandler(txtBoxBuscar_KeyPress);

            //label1Buscar Cabecera del "txtBoxBuscar"
            this.label1Buscar = new Label();
            this.label1Buscar.AutoSize = true;
            this.label1Buscar.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.label1Buscar.Location = new Point(30, 90);
            this.label1Buscar.Text = "Nombre del campo: ";
            //this.label1Buscar.Size = new Size(28, 13);

            //label2Buscar Cabecera del combo "combo1Buscar"
            this.label2Buscar = new Label();
            this.label2Buscar.AutoSize = true;
            this.label2Buscar.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.label2Buscar.Location = new Point(30, 30);
            this.label2Buscar.Text = "Buscar por:";
            //this.label2Buscar.Size = new Size(28, 13);

            //combo1Buscar es el combo box que indica sobre qué campo de la tabla se va a realizar la busqueda
            this.combo1Buscar = new ComboBox();
            this.combo1Buscar.Location = new Point(30, 60);
            this.combo1Buscar.Size = new System.Drawing.Size(150, 21);
            this.combo1Buscar.FormattingEnabled = true;
            this.combo1Buscar.Items.Add("Codigo de Campaña");
            //this.combo1Buscar.Items.Add("Fecha");
            this.combo1Buscar.Items.Add("Nombre de Campaña");
            this.combo1Buscar.Items.Add("Fecha de Inicio");
            this.combo1Buscar.SelectedItem = "Codigo de Campaña";

            //datos auxiliares
            string sqlCad;
            sqlCad = "select c.idCampana as Codigo_Campaña, c.nombre as Nombre, c.fechaInicio as Fecha_Inicio, c.fechaFin as Fecha_Fin, c.costo as Costo, c.presupuesto as Presupuesto, m.nombre as Moneda, est.idEstado as Estado";
            sqlCad = sqlCad + " from campana c, Emergencia e, moneda m, estadocampana est";
            sqlCad = sqlCad + " where c.idemergencia = e.idemergencia and c.idmoneda = m.idmoneda and est.idestado = c.idestado";

            SqlDataAdapter sqlAdap;

            //Aqui se va a llenar un grid con la data de la tabla "Emergencia"
            try
            {
                sqlAdap = new SqlDataAdapter(sqlCad, Conexion.connection);
                sqlAdap.Fill(this.dtData);
                this.dvgCampanas.DataSource = this.dtData.Tables[0];
            }
            catch
            {
                MessageBox.Show("Error de conexion a al BD");
            }

            pan.Controls.Add(label2Buscar);
            pan.Controls.Add(combo1Buscar);
            pan.Controls.Add(label1Buscar);
            pan.Controls.Add(txtBoxBuscar);
            pan.Controls.Add(dvgCampanas);
        }

        //Este metodo se encarga de hacer una busqueda a lo GOOGLE =) osea mientras se va escribiendo el texto del campo que estas buscando
        //El grid va mostrando las filas que coinciden con lo escrito hasta el momento.

        private void txtBoxBuscar_KeyPress(object sender, KeyPressEventArgs e)
        {
            string strCad;
            string campoSeleccionado = "";
            if (e.KeyChar != Convert.ToChar(Keys.Back))
                strCad = txtBoxBuscar.Text + e.KeyChar;
            else
            {
                if (txtBoxBuscar.Text.Length > 0)
                    strCad = txtBoxBuscar.Text.Substring(0, txtBoxBuscar.Text.Length - 1);
                else
                    strCad = txtBoxBuscar.Text;
            }
            DataView dv;

            if (combo1Buscar.SelectedItem == "Codigo de Campaña")
                campoSeleccionado = "Codigo_Campaña";
            else if (combo1Buscar.SelectedItem == "Nombre de Campaña")
                campoSeleccionado = "Nombre";
            else if (combo1Buscar.SelectedItem == "Fecha de Inicio")
                campoSeleccionado = "Fecha_Inicio";

            dv = new DataView(this.dtData.Tables[0], campoSeleccionado + " like'%" + strCad + "%'", campoSeleccionado, DataViewRowState.CurrentRows);
            this.dvgCampanas.DataSource = dv;
        }

        //AL DARLE REGISTRAR

        private void buttonRegistrar_Click(object sender, EventArgs e)
        {
            string fini;
            string ffin;
            string nombreCamp;
            string descCamp;
            string moneda = "";
            string codigoMon = "";
            double costo, presupuesto;
            string estado = "";
            bool esnumber;
            string ffin2;
            string fini2;
            string codigoEmergencia = "";

            fini = FechaInicioCampNuevo.Value.ToString("dd/MM/yyyy");
            fini2 = FechaInicioCampNuevo.Value.ToString("yyyyMMdd");
            //MessageBox.Show(fini2);
            ffin = FechaFinCampNuevo.Value.ToString("dd/MM/yyyy");
            ffin2 = FechaFinCampNuevo.Value.ToString("yyyyMMdd");
            //MessageBox.Show(ffin2);

            if (Convert.ToInt32(ffin2) < Convert.ToInt32(fini2))
            {
                MessageBox.Show("La fecha fin debe ser mayor o igual que la fecha de inicio", "Error");
                return;
            }

            nombreCamp = nombreCampTextNuevo.Text;
            descCamp = descripCampTextNuevo.Text;
            moneda = "" + ComboMonedaCampNuevo.SelectedItem;


            //  si codigoemergencia admite NULOS
            //if (comboEmergenciaCampNuevo.Text != "")
            //    codigoEmergencia = "" + comboEmergenciaCampNuevo.SelectedItem.ToString().Substring(0, 10);
            if (comboEmergenciaCampNuevo.Text == "")
            {
                MessageBox.Show("Debe elegir necesariamente una emergencia", "Error");
                return;
            }
            else codigoEmergencia = "" + comboEmergenciaCampNuevo.SelectedItem.ToString().Substring(0, 12);

            if (costoCampTextNuevo.Text != "")
            {
                esnumber = EsNumero(costoCampTextNuevo.Text);
                if (!esnumber)
                {
                    MessageBox.Show("Ingrese solo números en el campo Costo", "Error");
                    return;
                }
                else costo = double.Parse(costoCampTextNuevo.Text);
            }
            else costo = -1; // -1 indica que no se ingreso ningun numero el textbox

            if (presupuestoCampTextNuevo.Text != "")
            {
                esnumber = EsNumero(presupuestoCampTextNuevo.Text);
                if (!esnumber)
                {
                    MessageBox.Show("Ingrese solo números en el campo Presupuesto", "Error");
                    return;
                }
                else presupuesto = double.Parse(presupuestoCampTextNuevo.Text);
            }
            else presupuesto = -1; // -1 indica que no se ingreso ningun numero el textbox


            if (moneda != "" ) codigoMon = GestorCampana.ObtenerCodigoMoneda(moneda);
            //if (moneda == "NUEVO SOL")
            //    codigoMon = "MON0000001";
            //if (moneda == "DOLAR")
            //    codigoMon = "MON0000002";
            //if (moneda == "EURO")
            //    codigoMon = "MON0000003";

            else if (moneda == "")
            {
                MessageBox.Show("Debe elegir necesariamente un tipo de moneda.", "Error");
                return;
            }

            Campaña campana = new Campaña();
            campana.IdEmergencia = codigoEmergencia;

            //DEBE APARECER UN COMBO BOX DE ESTADO <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
            //campana.IdEstado = estado;
            campana.IdEstado = "ESTCMP0001";
            campana.IdMoneda = codigoMon;
            campana.Nombre = nombreCamp;
            campana.Presupuesto = (float)presupuesto;
            campana.Costo = (float)costo;
            campana.FechaInicio = fini;
            campana.FechaFin = ffin;
            campana.Descripcion = descCamp;

            GestorCampana.RegistrarCampaña(campana);
            //GestorCampana.RegistrarCampaña(nombreCamp, descCamp, codigoEmergencia, "", fini, ffin, presupuesto, costo, moneda);
            //  GestorCampana.RegistrarCampaña(nombreCamp, descCamp, fini, ffin, codigoMon, costo, 1, codigoEmergencia);
        }


        private bool EsNumero(string cadena)
        {
            //Sencillamente, si se logra hacer la conversión, entonces es número
            try
            {
                double resp = Convert.ToDouble(cadena);
                return true;
            }
            catch //caso contrario, es falso.
            {
                return false;
            }

        }
    }
}
